关于TypeError和ValueError错误判断的一点点实践

您所在的位置:网站首页 invalid suffix是什么错误 关于TypeError和ValueError错误判断的一点点实践

关于TypeError和ValueError错误判断的一点点实践

2023-12-08 13:14| 来源: 网络整理| 查看: 265

作为一个大一萌新中的小菜鸡,在做编程题目时遇到过很多磕磕绊绊的障碍,在这里,我就记录下自己的一些发现,和跟我一样的萌新们一起进步! 我做到了这样一道题目:

题目描述: Pile 想实现一个判断素数的函数。当这个数是素数的时候输出 ‘True’ ,不是素数输出 ‘False’ 但是她是一个粗心的孩子,她有时候会输入一些奇怪的字符串,这个时候你需要输出 ‘invalid’。 **输入:**输入一行一个字符串表示 Pile 的输入。 **输出:**对于输入,输出一行字符串 ‘True’ ‘False’ 或者 ‘invalid’ 表示结果 **提示内容:**可能会触发的错误有TypeError和ValueError 这是我第一次提交的代码 上图是我第一次提交的代码,但是一直不能通过评判系统,我单独测试了一下我判断素数的部分,程序没有问题(判断素数其实定义一个函数会更加好…),那肯定就是我的两个Error判断出问题了。我仔细想了想我的代码,a=eval(input()),input()函数会返回一个字符串类型结果,eval()函数可以将字符串转换成有效表达式 在这里插入图片描述 在这张图中,我把TypeError注释掉了,也就是现在程序无法对TypeError做出对策,当我输入字符串“abc”时,会有如下结果: 在这里插入图片描述 这里之所以会报错,是因为pow()函数中的参数只能是数值类型(整数或浮点数),而我输入的是一个字符串,经过eval()函数处理,返回的还是一个字符串类型 那接下来我们就把TypeError的注释去掉吧:(可以看到,去掉对TypeError的注释程序就能对类型错误采取相应措施了) 去掉TypeError的注释 但是,这个时候,问题又来了,加上TypeError类型错误解决了,那ValueError怎么办呢?是否可以如我们所愿,直接在后面再将上一个Except TypeError就可以了呢?我们就上面的程序输入一个小数试试 输入了一个小数居然结果返回了True! ! !ValueError是不是没起作用啊?! 注释掉ValueError,发现确实它没起到作用! 为什么没起到作用呢?因为我们程序里面似乎没有对Value做出任何要求(比如要求数为整数…) 下面了,我们先看看ValueError和TypeError到底指的是什么仔细看看 在语句a=eval(input())中,我们如果输入3.3,eval()函数会返回3.3的浮点数据没有Value错误,我们想要出现ValueError应该把a=eval(input())换成a=int(input()),input()返回一个字符串,int()函数可以接受字符串,但这个字符串不具备表示一个整数的含义,比如我们输入3.3,input()返回字符串‘3.3’,但字符串’3.3’不具备表示一个整数的含义,即int()函数不能直接整数化一个带小数点的字符串,所以会报错。 这个时候就报ValueError啦! 去掉对ValueError的注释所的结果 现在看似好像问题都要解决了,但是现在的TypeError好像显得有点多余了,不管我输入什么,input()都会返回一个字符串类型,对于int()函数来说,只要不是输入的整数,就都会报错,加上except ValueError之后就会返回invalid,所以现在只存在ValueError一种错误啦,我们就可以删掉except TypeError了 这是我正确通过评判系统的代码,比较初级。。。

这是我后来改进的代码,运行时间减少了一些,还有,其实具体的错误类型根本不用写出来,前面的讨论只是在分析我出错的原因!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3